package cn.sofwin.web.blog.service.impl;

import cn.sofwin.core.dao.BaseDao;
import cn.sofwin.core.service.impl.BaseServiceImpl;
import cn.sofwin.web.blog.dao.UserDao;
import cn.sofwin.web.blog.entity.User;
import cn.sofwin.web.blog.service.UserService;

/**
 * 用户服务接口实现类
 */
public class UserServiceImpl extends BaseServiceImpl<User> implements UserService {
    /**
     * 用户数据访问对象
     */
    private UserDao userDao = new UserDao();

    /**
     * 私有的实例对象，用户实现单例模式
     */
    private static UserServiceImpl userService = new UserServiceImpl();

    /**
     * 将构造方法设为私有，用于实现单例模式
     */
    private UserServiceImpl() {
        super();
    }

    /**
     * 对外提供的静态方法，用于获取服务实例
     *
     * @return
     */
    public static UserService getInstance() {
        return userService;
    }

    @Override
    protected BaseDao<User> getDao() {
        return userDao;
    }

    /**
     * @param username 用户名
     * @param password 密码
     * @param nickname 昵称
     * @return 返回null代表注册失败
     */
    @Override
    public User register(String username, String password, String nickname) {
        User user = userDao.selectByUsername(username);
        //用户名存在，不允许注册
        if (user != null) {
            return null;
        }
        //创建用户对象
        user = new User();
        user.setUsername(username);
        user.setPassword(password);
        user.setNickname(nickname);
        user.setGender(0);

        //保存到数据库
        int id = userDao.insert(user);
        user.setId(id);
        return user;
    }
}
